﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class ОбщегоНазначенияКлиент
	{
		////////////////////////////////////////////////////////////////////////////////
		// Функции работы со списками в формах
		// Проверяет, что в параметре команды Параметр передан объект ожидаемого типа ОжидаемыйТип.
		// В противном случае, выдает стандартное сообщение и возвращает Ложь.
		// Такая ситуация возможна, например, если в списке выделена строка группировки.
		//
		// Для использования в командах, работающих с элементами динамических списков в формах.
		// Пример использования:
		//
		//   Если НЕ ПроверитьТипПараметраКоманды(Элементы.Список.ВыделенныеСтроки,
		//      Тип("ЗадачаСсылка.ЗадачаИсполнителя")) Тогда
		//      Возврат;
		//   КонецЕсли;
		//   ...
		//
		// Параметры:
		//  Параметр     - Массив или ссылочный тип - параметр команды.
		//  ОжидаемыйТип - Тип                      - ожидаемый тип параметра.
		//
		// Возвращаемое значение:
		//  Булево - Истина, если параметр ожидаемого типа.
		//

		public object ПроверитьТипПараметраКоманды(/*Знач Параметр, Знач ОжидаемыйТип*/)
		{
			if(true/*Параметр = Неопределено*/)
			{
			}
			//Результат = Истина;
			if(true/*ТипЗнч(Параметр) = Тип("Массив")*/)
			{
				/*// Если в массиве один элемент и он неправильного типа...
*/
				//Результат = НЕ (Параметр.Количество() = 1 И ТипЗнч(Параметр[0]) <> ОжидаемыйТип);
			}
			if(true/*НЕ Результат*/)
			{
				//Предупреждение(НСтр("ru = 'Команда не может быть выполнена для указанного объекта.'"));
			}
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// Клиентские процедуры общего назначения
		// Процедура ПреобразоватьЗимнееВремяКТекущему изменяет переданное
		// значение времени в местное время из зимнего к текущему с учетом NTFS коррекции.
		//
		// Параметры:
		//  ДатаВремя    - Дата, преобразуемое время.
		//
		// Возвращаемое значение:
		//  Дата - преобразованное время.
		//

		public void ПреобразоватьЗимнееВремяКТекущему(/*ДатаВремя*/)
		{
			//ДатаВремя = МестноеВремя(ДатаВремя);
		}
		// Предлагает пользователю установить расширение работы с файлами в веб-клиенте.
		// При этом инициализирует параметр сеанса ПредлагатьУстановкуРасширенияРаботыСФайлами.
		//
		// Предназначена для использования в начале участков кода, в которых ведется работа с файлами.
		// Например:
		//
		//    ПредложитьУстановкуРасширенияРаботыСФайлами("Для печати документа необходимо установить расширение работы с файлами.");
		//    // далее располагается код печати документа
		//    //...
		//
		// Параметры
		//  Сообщение  - Строка - текст сообщения. Если не указан, то выводится текст по умолчанию.
		//
		// Возвращаемое значение:
		//  Строка - возможные значения:
		//           Подключено                - расширение подключено
		//           НеПодключено              - пользователь отказался от подключения
		//           НеподдерживаемыйВебКлиент - расширение не может быть подключено, так как не поддерживается в Веб-клиенте
		//

		public object ПредложитьУстановкуРасширенияРаботыСФайлами(/*ТекстПредложения = Неопределено*/)
		{
			//РасширениеПодключено = ПодключитьРасширениеРаботыСФайлами();
			if(true/*РасширениеПодключено*/)
			{
				/*// если расширение и так уже есть, незачем про него спрашивать
*/
			}
			if(true/*ОбщегоНазначенияКлиентПовтИсп.ЭтоВебКлиентБезПоддержкиРасширенияРаботыСФайлами()*/)
			{
			}
			//ПервоеОбращениеЗаСеанс = Ложь;
			if(true/*ПредлагатьУстановкуРасширенияРаботыСФайлами = Неопределено*/)
			{
				//ПервоеОбращениеЗаСеанс = Истина;
				/*ПредлагатьУстановкуРасширенияРаботыСФайлами = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("НастройкиПрограммы", 
			"ПредлагатьУстановкуРасширенияРаботыСФайлами");*/
				if(true/*ПредлагатьУстановкуРасширенияРаботыСФайлами = Неопределено*/)
				{
					//ПредлагатьУстановкуРасширенияРаботыСФайлами = Истина;
					/*ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("НастройкиПрограммы", "ПредлагатьУстановкуРасширенияРаботыСФайлами", 
				ПредлагатьУстановкуРасширенияРаботыСФайлами);*/
				}
			}
			if(true/*ПредлагатьУстановкуРасширенияРаботыСФайлами = Ложь*/)
			{
			}
			if(true/*ПервоеОбращениеЗаСеанс*/)
			{
				//ПараметрыФормы = Новый Структура("Сообщение", ТекстПредложения);
				//КодВозврата = ОткрытьФормуМодально("ОбщаяФорма.ВопросОбУстановкеРасширенияРаботыСФайлами", ПараметрыФормы);
				if(true/*КодВозврата = Неопределено*/)
				{
					//КодВозврата = Истина;
				}
				//ПредлагатьУстановкуРасширенияРаботыСФайлами = КодВозврата;
				/*ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("НастройкиПрограммы", "ПредлагатьУстановкуРасширенияРаботыСФайлами", 
			ПредлагатьУстановкуРасширенияРаботыСФайлами);*/
			}
			return null;
		}
		// Предлагает пользователю подключить расширение работы с файлами в веб-клиенте,
		// и в случае отказа выдает предупреждение о невозможности продолжения операции.
		//
		// Предназначена для использования в начале участков кода, в которых ведется работа с файлами
		// только при подключенном расширении.
		// Например:
		//
		//    Если Не РасширениеРаботыСФайламиПодключено("Для печати документа необходимо установить расширение работы с файлами.") Тогда
		//      Возврат;
		//    КонецЕсли;
		//    // далее располагается код печати документа
		//    //...
		//
		// Параметры
		//  ТекстПредложения    - Строка - текст с предложением подключить расширение работы с файлами.
		//                                 Если не указан, то выводится текст по умолчанию.
		//  ТекстПредупреждения - Строка - текст предупреждения о невозможности продолжения операции.
		//                                 Если не указан, то выводится текст по умолчанию.
		//
		// Возвращаемое значение:
		//  Булево - Истина, если расширение подключено.
		//

		public object РасширениеРаботыСФайламиПодключено(/*ТекстПредложения = Неопределено, ТекстПредупреждения = Неопределено*/)
		{
			//Результат = ПредложитьУстановкуРасширенияРаботыСФайлами(ТекстПредложения);
			//ТекстСообщения = "";
			if(true/*Результат = "НеПодключено"*/)
			{
				if(true/*ТекстПредупреждения <> Неопределено*/)
				{
					//ТекстСообщения = ТекстПредупреждения;
				}
			}
			if(true/*Не ПустаяСтрока(ТекстСообщения)*/)
			{
				//Предупреждение(ТекстСообщения);
			}
			//Возврат Результат = "Подключено";
			return null;
		}
		// Выполняет регистрацию компоненты "comcntr.dll" для текущей версии платформы.
		// В случае успешной регистрации, предлагает пользователю перезапустить клиентский сеанс
		// для того чтобы регистрация вступила в силу.
		//
		// Вызывается перед клиентским кодом, который использует менеджер COM-соединений (V82.COMConnector)
		// и инициируется интерактивными действиями пользователя. Например:
		//
		// ЗарегистрироватьCOMСоединитель();
		//   // далее идет код, использующий менеджер COM-соединений (V82.COMConnector)
		//   // ...
		//

		public void ЗарегистрироватьCOMСоединитель(/**/)
		{
			//ТекстКоманды = "";
			//Стр = "";
			if(true/*СокрЛП(Стр) <> "0"*/)
			{
				//ТекстСообщения = НСтр("ru = 'Ошибка при регистрации компоненты comcntr.'") + Символы.ПС;
				/*ДобавитьСообщениеДляЖурналаРегистрации(НСтр("ru = 'Регистрация компоненты comcntr'"), "Ошибка",ТекстСообщения + 
			СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Код ошибки regsvr32: %1.
				| (Код ошибки 5 означает, что недостаточно прав доступа. Выполните команду от имени пользователя с правами администратора на локальной машине.)
			    |
				|Текст команды: 
				|%2'"), Стр, ТекстКоманды));*/
				//ОбщегоНазначения.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации);
				/*Предупреждение(ТекстСообщения + НСтр("ru = '
			|Подробности см. в Журнале регистрации.'"));*/
			}
			/*Ответ = Вопрос(НСтр("ru = 'Для завершения перерегистрации компоненты comcntr необходимо перезапустить сеанс 1С:Предприятия.
		|Перезапустить сейчас?'"), РежимДиалогаВопрос.ДаНет);*/
			if(true/*Ответ = КодВозвратаДиалога.Да*/)
			{
				//ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина;
				//ЗавершитьРаботуСистемы(Истина, Истина);
			}
		}
		// Процедура позволяет выбрать время из выпадающего списка
		// Параметры:
		//  Форма - управляемая форма / форма - форма, на которой располагается элемент,
		//                                      для которого будет выбираться время
		//  ПолеВводаФормы -  ПолеФормы - элемент-владелец списка, у которого будет
		//                                показан выпадающий список значений времен
		//  ТекущееЗначение - Дата - значение, на которое будет спозиционирован выпадающий список
		//  Интервал - число - интервал времени (в секундах), с которым необходимо заполнить список, по умолчанию час
		//

		public object ВыбратьВремя(/*Форма, ПолеВводаФормы, Знач ТекущееЗначение, Интервал = 3600*/)
		{
			//НачалоРабочегоДня      = '00010101000000';
			//ОкончаниеРабочегоДня   = '00010101235959';
			//СписокВремен = Новый СписокЗначений;
			/*НачалоРабочегоДня = НачалоЧаса(НачалоДня(ТекущееЗначение) +
		Час(НачалоРабочегоДня) * 3600 +
		Минута(НачалоРабочегоДня)*60);*/
			/*ОкончаниеРабочегоДня = КонецЧаса(НачалоДня(ТекущееЗначение) +
		Час(ОкончаниеРабочегоДня) * 3600 +
		Минута(ОкончаниеРабочегоДня)*60);*/
			//ВремяСписка = НачалоРабочегоДня;
			while(true/*НачалоЧаса(ВремяСписка) <= НачалоЧаса(ОкончаниеРабочегоДня)*/)
			{
				if(true/*НЕ ЗначениеЗаполнено(ВремяСписка)*/)
				{
					//ПредставлениеВремени = "00:00";
				}
				//СписокВремен.Добавить(ВремяСписка, ПредставлениеВремени);
				//ВремяСписка = ВремяСписка + Интервал;
			}
			/*;
	
	НачальноеЗначение = СписокВремен.НайтиПоЗначению(ТекущееЗначение);*/
			if(true/*НачальноеЗначение = Неопределено*/)
			{
				//ВыбранноеВремя = Форма.ВыбратьИзСписка(СписокВремен, ПолеВводаФормы);
			}
			if(true/*ВыбранноеВремя = Неопределено*/)
			{
			}
			return null;
		}
		// Возвращает Истина, если клиентское приложение подключено к базе через веб-сервер.
		//

		public object КлиентПодключенЧерезВебСервер(/**/)
		{
			//Возврат Найти(Врег(СтрокаСоединенияИнформационнойБазы()), "WS=") = 1;
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// Функции для работы с журналом регистрации
		// Записывает очередное сообщение в глобальный массив сообщений.
		// Параметры :
		// ИмяСобытия - строка, имя события для журнала регистрации
		// ПредставлениеУровня - строка, описание уровня события, по нему будет определен уровень события при записи на сервере
		// ОбъектМетаданных - ОбъектМетаданных(подробнее см. синтакс-помощник по "ЗаписьЖурналаРегистрации")
		// Данные - Произвольный, данные, с которыми связано событие (например, ссылки на объект)
		// Комментарий - строка, комментарий для события журнала
		// ПредставлениеРежима - строка, представление режима транзакции для данного события
		// ДатаСобытия - дата, точная дата возникновения события, описанного в сообщении. Будет добавлена в начало комментария.
		// ЗаписатьСобытия - булево, признак вызова процедуры непосредственной записи накопленных сообщений после добавления.

		public void ДобавитьСообщениеДляЖурналаРегистрации(/*ИмяСобытия, ПредставлениеУровня = "Информация", 
	Комментарий = "", ДатаСобытия = "", ЗаписатьСобытия = Ложь*/)
		{
			/*// В случае необходимости выполним инициализацию глобального списка сообщений для журнала регистрации.
*/
			if(true/*СообщенияДляЖурналаРегистрации = Неопределено*/)
			{
				//СообщенияДляЖурналаРегистрации = Новый СписокЗначений;
			}
			if(true/*ДатаСобытия = ""*/)
			{
				//ДатаСобытия = ТекущаяДата();
			}
			//КомментарийСДатой = Строка(ДатаСобытия) +" " + Комментарий;
			/*СтруктураСообщения = Новый Структура("ИмяСобытия, ПредставлениеУровня, Комментарий", 
		ИмяСобытия, ПредставлениеУровня, КомментарийСДатой);*/
			//СообщенияДляЖурналаРегистрации.Добавить(СтруктураСообщения);
			if(true/*ЗаписатьСобытия*/)
			{
				//ОбщегоНазначения.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации);
			}
		}
		// Проверяет текущий вариант использования журнала регистрации.
		// Если регистрация изменений отключена - то предлагает полностью включить его.
		//
		// Параметры:
		// СписокПроверок - СписокЗначений, список строковых представлений режимов журнала регистрации, которые необходимо проверить на включение.
		// СпрашиватьОРегистрации - Булево, признак, отвечающий за вопрос о включении журнала в необходимых режимах.
		// СообщениеОНеобходимостиВключенияЖурнала - Строка, сообщение, которое будет выведено пользователю в случае, когда проверка не прошла, и надо включить журнале регистрации.

		public void ПроверитьВключениеЖурналаРегистрации(/*СписокПроверок = Неопределено, СпрашиватьОРегистрации = Истина, СообщениеОНеобходимостиВключенияЖурнала = ""*/)
		{
			/*// регистрация данных видов событий уже включена
*/
			if(true/*ОбщегоНазначения.ПроверитьВключениеЖурналаРегистрации(СписокПроверок)*/)
			{
			}
			if(true/*СпрашиватьОРегистрации*/)
			{
				if(true/*Не ПустаяСтрока(СообщениеОНеобходимостиВключенияЖурнала)*/)
				{
					/*// если было передано произвольное сообщение, тогда выведем его
*/
					//ТекстВопроса = СообщениеОНеобходимостиВключенияЖурнала;
				}
				//Режим = РежимДиалогаВопрос.ДаНет;
				//Умолчание = КодВозвратаДиалога.Да;
				//Заголовок = НСтр("ru = 'Журнал регистрации'");
				//КодВозврата = Вопрос(ТекстВопроса, Режим, , Умолчание, Заголовок);
			}
			if(true/*КодВозврата = КодВозвратаДиалога.Да*/)
			{
			}
		}
		////////////////////////////////////////////////////////////////////////////////
		// Функции для обработки действий пользователя в процессе редактирования
		// многострочного текста, например комментария в документах
		// Открывает форму редактирования произвольного многострочного текста модально
		//
		// Параметры:
		// МногострочныйТекст      - Строка - произвольный текст, который необходимо отредактировать
		// РезультатРедактирования - Строка - переменная, в которую будет помещен результат редактирования
		// Модифицированность       - Строка - флаг модифицированности формы
		// Заголовок               - Строка - текст, который необходимо отобразить в заголовке формы
		//

		public void ОткрытьФормуРедактированияМногострочногоТекста(/*Знач МногострочныйТекст, РезультатРедактирования, Модифицированность = Ложь, 
		Знач Заголовок = Неопределено*/)
		{
			if(true/*Заголовок = Неопределено*/)
			{
				//ТекстВведен = ВвестиСтроку(МногострочныйТекст,,, Истина);
			}
			if(true/*Не ТекстВведен*/)
			{
			}
			//РезультатРедактирования = МногострочныйТекст;
			if(true/*Не Модифицированность*/)
			{
				//Модифицированность = Истина;
			}
		}
		// Открывает форму редактирования многострочного комментария модально
		//
		// Параметры:
		//  МногострочныйТекст      - Строка - произвольный текст, который необходимо отредактировать
		//  РезультатРедактирования - Строка - переменная, в которую будет помещен результат редактирования
		//  Модифицированность       - Строка - флаг модифицированности формы
		//
		// Пример использования:
		//  ОткрытьФормуРедактированияКомментария(Элемент.ТекстРедактирования, Объект.Комментарий, Модифицированность);
		//

		public void ОткрытьФормуРедактированияКомментария(/*Знач МногострочныйТекст, РезультатРедактирования,
	Модифицированность = Ложь*/)
		{
			/*ОткрытьФормуРедактированияМногострочногоТекста(МногострочныйТекст, РезультатРедактирования, Модифицированность, 
		НСтр("ru='Комментарий'"));*/
		}
	}
}
